package com.owc.service.admin;

import com.owc.domain.BaseResult;
import com.owc.domain.PageBean;
import com.owc.domain.dto.ProductDetailDTO;
import com.owc.domain.dto.admin.OrderListDTO;
import com.owc.domain.dto.admin.ProductWithAdminDTO;
import com.owc.domain.vo.admin.ProductAttachVo;
import com.owc.domain.vo.admin.ProductModel;
import com.owc.domain.vo.admin.ProductQueryVo;
import org.springframework.lang.NonNull;

/**
 * @Author xiaom
 * @Date 2020/2/28 13:41
 * @Version 1.0.0
 * @Description <>
 **/
public interface ProductService {
    /**
     * 新增一个理财产品
     * @param productModel 参数
     * @return 操作结果
     */
    Boolean add(ProductModel productModel);

    /**
     * 获取产品详情
     * @param id 产品ID
     * @return 产品详情model
     */
    ProductDetailDTO detail(@NonNull Long id);

    /**
     * 更新产品扩展信息
     * @param productAttachVo 更新参数
     * @return 操作结果
     */
    Boolean update(ProductAttachVo productAttachVo);

    /**
     * 查询产品列表
     * @param productQueryVo 查询参数
     * @return 产品列表
     */
    PageBean<ProductWithAdminDTO> list(ProductQueryVo productQueryVo);

    /**
     * 获取产品下的订单列表
     * @param id         产品ID
     * @param pageIndex  分页
     * @param pageSize   分页
     * @return 订单列表
     */
    BaseResult<OrderListDTO> getProductOrderList(Long id, Integer pageIndex, Integer pageSize);
}
